const axios = require('axios');
const dotenv = require('dotenv');

dotenv.config();

// DeepSeek API 配置
const DEEPSEEK_API_URL = 'https://api.deepseek.com/v1/chat/completions';
// 如果没有配置API密钥，使用一个提示信息
const DEEPSEEK_API_KEY = process.env.DEEPSEEK_API_KEY;
const advisorPrompt = `你是一位持有国家执业医师资格证的健康顾问助手，需以循证医学为基础为用户提供健康咨询服务。  

### 核心职责  
1. **疾病与症状指导**：解答感冒、高血压、消化不良等常见健康问题，说明症状诱因、缓解措施及就医指征；  
2. **健康管理建议**：制定个性化饮食方案（如控糖、减脂、高蛋白饮食）、运动计划（如适合膝盖不适人群的低强度运动）及睡眠改善策略；  
3. **特殊时期关怀**：为孕妇（如孕期营养补充）、儿童（如疫苗接种注意事项）、老年人（如防跌倒措施）提供针对性建议。  

### 内容输出要求  
- 所有建议需引用WHO、中华医学会等权威机构指南，避免使用偏方或未经证实的疗法；  
- 语言需通俗易懂，对医学术语（如“BMI”）需同步解释（“身体质量指数，计算方式为体重kg/身高m²”）；  
- 严禁进行疾病诊断，仅可提示风险（如“空腹血糖7.2mmol/L超过正常范围，建议尽快到内分泌科复查糖耐量”）；  
- 遇紧急情况（如胸痛、急性过敏）需立即引导用户拨打急救电话，并说明“请立即就医，切勿延误治疗”。  

### 交互示例  
**用户提问**：“最近熬夜后头晕恶心，该怎么缓解？”  
**你的回应**：“长期熬夜可能导致血压波动、脑供血不足或自主神经紊乱。建议先补充睡眠（至少6-8小时），保持室内通风，少量多次饮用淡盐水。若休息后头晕持续超过1天，或伴随视物旋转、肢体麻木，可能是前庭性疾病或脑血管问题，需尽快到神经内科就诊。”  

当前时间为2025年6月11日，若涉及疫苗、疾病流行趋势等时效性内容，需以最新公共卫生数据为准。`;
class AIService {
  /**
   * 发送消息到DeepSeek API并获取回复
   * @param {string} message - 用户输入的消息
   * @param {array} history - 对话历史记录
   * @returns {Promise} - 返回AI的回复
   */
  static async sendMessage(message, history = []) {
    try {
      if (!DEEPSEEK_API_KEY || DEEPSEEK_API_KEY === '请配置您的DeepSeek API密钥') {
        // 如果未配置API密钥，返回一个模拟响应
        console.warn('DeepSeek API密钥未配置，使用模拟响应');
        return {
          reply: `[系统提示] 您需要配置DeepSeek API密钥才能使用AI助手功能。请在服务器的.env文件中配置DEEPSEEK_API_KEY。\n\n您的问题是: "${message}"`,
          conversationId: null
        };
      }

      // 构造请求体 - 遵循DeepSeek API文档
      const requestBody = {
        model: "deepseek-chat",
        messages: [
          { role: "system", content: advisorPrompt },
          ...history,
          { role: "user", content: message }
        ],
        temperature: 0.7,
        max_tokens: 800
      };

      console.log('发送请求到DeepSeek API:', JSON.stringify(requestBody, null, 2));

      // 发送请求到DeepSeek API
      const response = await axios.post(DEEPSEEK_API_URL, requestBody, {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${DEEPSEEK_API_KEY}`
        }
      });

      console.log('收到DeepSeek API响应:', JSON.stringify(response.data, null, 2));

      // 解析并返回响应
      if (response.data && response.data.choices && response.data.choices.length > 0) {
        return {
          reply: response.data.choices[0].message.content,
          conversationId: response.data.id || null
        };
      } else {
        throw new Error('无效的API响应: ' + JSON.stringify(response.data));
      }
    } catch (error) {
      console.error('AI服务错误:', error.message);
      // 返回友好的错误信息
      return {
        reply: `[系统错误] 与AI服务通信时出现问题: ${error.message}`,
        conversationId: null
      };
    }
  }
}

module.exports = AIService; 